
# ifndef __DFX_EDITOR_H__
# define __DFX_EDITOR_H__

# include "dfxFileLog.h"
# include "dfxCorePlugin.h"
# include "dfxGraphicsPlugin.h"
# define NUM_WINDOWS    4

namespace DFX
{
    class Editor 
    {
    private:
                
        String          mPluginPath;
        Color4          mClearColor;
        FileLog         *mLog;
        CorePlugin      *mCorePlugin;
        GraphicsPlugin  *mGraphicsPlugin;
        Window          *mWindow[NUM_WINDOWS];
        GraphicsDevice  *mGraphicsDevice;        

    public:

        Editor(const String &pluginPath);
        ~Editor();

        Window* GetWindow(UInt32 index) const
        {
            return mWindow[index];
        }

        GraphicsDevice* GetGraphicsDevice() const
        {
            return mGraphicsDevice;
        }

        DFXRESULT Initialize(const std::vector<WINDOW_PARAMETERS*> params);
        DFXRESULT Destroy();

        void Render(UInt32 index);
    };
}

# endif